﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using YasharEl.Infrastructure.ObjectFactory;
using YasharEl.Infrastructure.Diagnostics.Logging;

namespace YasharEl.Infrastructure.ApplicationModel.Bootstrap.Extensibility
{
    public abstract class BaseComplexBootstrappingExtension : IComplexBootstrappingExtension
    {
        public IEnumerable<Type> ScannedTypes
        {
            get;
            set;
        }

        public BaseComplexBootstrappingExtension()
        {
            ScannedTypes = new List<Type>();
        }

        public virtual void Start()
        {
        }

        public virtual void Ready()
        {
        }

        public virtual void Shutdown()
        {
        }

        public virtual void Configure()
        {
        }

        public string Name
        {
            get { return this.GetType().FullNameToString(); }
        }

        public abstract string Describe();

        public BaseDependencyContainer Container
        {
            get;
            set;
        }

        public ILogger Logger
        {
            get;
            set;
        }


        public IBootstrapper HostingBootstrapper
        {
            get;
            set;
        }
    }
}
